#!/bin/bash

# 获取所有conda环境路径
envs=$(conda env list | grep -o '/.*')

# 获取当前日期时间，格式为 dhms (日期、小时、分钟、秒)
datetime=$(date +"%Y%m%d_%H%M%S")

# 输出文件名
output_file="conda_ubuntu_${datetime}.csv"

# 输出表头到 CSV 文件
echo "Environment,Size" > "$output_file"

# 定义一个函数来获取文件夹大小，并以合适的单位显示
get_folder_size() {
    local path=$1
    size_in_bytes=$(du -sb "$path" | cut -f1)
    
    if [ "$size_in_bytes" -lt 1024 ]; then
        # 小于1KB，单位是字节
        echo "${size_in_bytes}B"
    elif [ "$size_in_bytes" -lt 1048576 ]; then
        # 小于1MB，单位是KB
        size_in_kb=$(echo "scale=2; $size_in_bytes / 1024" | bc)
        echo "${size_in_kb}KB"
    elif [ "$size_in_bytes" -lt 1073741824 ]; then
        # 小于1GB，单位是MB
        size_in_mb=$(echo "scale=2; $size_in_bytes / 1048576" | bc)
        echo "${size_in_mb}MB"
    elif [ "$size_in_bytes" -lt 1099511627776 ]; then
        # 小于1TB，单位是GB
        size_in_gb=$(echo "scale=2; $size_in_bytes / 1073741824" | bc)
        echo "${size_in_gb}GB"
    else
        # 大于1TB，单位是TB
        size_in_tb=$(echo "scale=2; $size_in_bytes / 1099511627776" | bc)
        echo "${size_in_tb}TB"
    fi
}

# 输出信息并保存到 CSV 文件
echo -e "Environment\tSize" # 使用制表符分隔

for env in $envs; do
    if [ -d "$env" ]; then
        folder_size=$(get_folder_size "$env")
        
        # 使用printf确保对齐，最多40个字符宽度
        printf "%-40s\t%s\n" "$env" "$folder_size"

        # 将结果保存到 CSV 文件
        echo "\"$env\",\"$folder_size\"" >> "$output_file"
    else
        echo "Environment $env does not exist or is not a valid directory."
    fi
done

echo "Results saved to $output_file"
